package com.inei.cie.capitulov;

import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.inei.cie.R;
import com.inei.cie.capituloix.CapituloIX_Activity;
import com.inei.cie.dao.CapituloVDao;
import com.inei.cie.entidades.P5;
import com.inei.cie.entidades.P5_N;
import com.inei.cie.utilitarios.Variables;

public class CapituloV_Total_Ambientes_Activity extends Activity {

	// Componentes
	public TableLayout tlAmbientePiso;

	public TextView tvTitulo;
	public ProgressDialog progreso;

	// Data
	public CapituloVDao cap5Dao;
	public String id_local;
	public int P5_NroPred;
	public int P5_NroPiso;
	public List<P5_N> lAmbientes;
	public List<P5_N> lTmp;
	public int count;
	public P5 obj2;
	// public String P5_Foto;
	public Variables var;
	// public String escala;

	public LinearLayout llAmbientes;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.capitulo_v_total_de_ambientes);

		IniciarComponentes();
	}

	public void IniciarComponentes() {
		// Data
		var = new Variables();
		cap5Dao = new CapituloVDao(getApplicationContext());
		id_local = getIntent().getExtras().getString("id_local");
		P5_NroPred = getIntent().getExtras().getInt("P5_NroPred");
		P5_NroPiso = getIntent().getExtras().getInt("P5_NroPiso");
		tvTitulo = (TextView) findViewById(R.id.tvTitulo);

		tvTitulo.setText("Local Nro " + id_local + " - Piso Nro. "
				+ (P5_NroPiso < 10 ? "0" + P5_NroPiso : P5_NroPiso));
		llAmbientes = (LinearLayout) findViewById(R.id.llAmbientes);
		CrearEdificaciones();
	}

	public List<View> items;

	public void CrearEdificaciones() {
		obj2 = cap5Dao.obtenerP5Local(id_local, P5_NroPred);
		count = obj2.getP5_Tot_E();
		cap5Dao.crearP5_NEdificaciones(id_local, P5_NroPred, P5_NroPiso, count);
		lAmbientes = cap5Dao.obtenerP5_NLocal(id_local, P5_NroPred, P5_NroPiso);
		items = new ArrayList<View>();
		llAmbientes.removeAllViews();
		for (int i = 0; i < count; i++) {
			final int pos = (i);
			LayoutInflater inflater = (LayoutInflater) this
					.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			View item = inflater.inflate(R.layout.item_lista_ambientes, null);
			ViewHolder holder = new ViewHolder();
			holder.tviAmbiente = (TextView) item
					.findViewById(R.id.tviAmbientes);
			holder.eteAmbiente = (EditText) item
					.findViewById(R.id.eteAmbientes);
			holder.tviAmbiente.setText("Edificacion Nro "
					+ ((pos + 1) < 10 ? "0" + (pos + 1) : "" + (pos + 1)));

			holder.eteAmbiente
					.setText(lAmbientes.get(i).getP5_TotAmb() < 10 ? "0"
							+ lAmbientes.get(i).getP5_TotAmb() : lAmbientes
							.get(i).getP5_TotAmb() + "");
			holder.eteAmbiente.addTextChangedListener(new TextWatcher() {

				@Override
				public void onTextChanged(CharSequence s, int start,
						int before, int count) {
					// TODO Auto-generated method stub
					if (s.toString().length() != 0) {
						lAmbientes.get(pos).setP5_TotAmb(
								Integer.parseInt(s.toString()));
					} else {
						lAmbientes.get(pos).setP5_TotAmb(0);
					}

				}

				@Override
				public void beforeTextChanged(CharSequence s, int start,
						int count, int after) {
					// TODO Auto-generated method stub

				}

				@Override
				public void afterTextChanged(Editable s) {
					// TODO Auto-generated method stub

				}
			});
			items.add(item);
			llAmbientes.addView(item);
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// TODO Auto-generated method stub
		getMenuInflater().inflate(R.menu.menu_capitulov_total_ambientes, menu);
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub

		switch (item.getItemId()) {
		case R.id.mnSalir:
			AlertDialog.Builder dialogo1 = new AlertDialog.Builder(this);
			dialogo1.setTitle("Importante");
			dialogo1.setMessage("Deseas Salir ?");
			dialogo1.setIcon(android.R.drawable.ic_dialog_alert);
			dialogo1.setCancelable(false);
			dialogo1.setPositiveButton("Si",
					new DialogInterface.OnClickListener() {
						public void onClick(DialogInterface dialogo1, int id) {
							System.exit(0);
						}
					});

			dialogo1.setNegativeButton("No",
					new DialogInterface.OnClickListener() {
						public void onClick(DialogInterface dialogo1, int id) {
							return;
						}
					});
			dialogo1.show();
			break;
		case R.id.mnGuardar:
			progreso = new ProgressDialog(this);
			progreso.setCancelable(false);
			progreso.setMessage("Espere por favor...");
			progreso.setProgress(ProgressDialog.STYLE_SPINNER);
			progreso.show();
			Ambientes ambientes = new Ambientes();
			ambientes.execute();
			break;
		case R.id.mnFoto:
			Intent foto = new Intent(CapituloV_Total_Ambientes_Activity.this,
					CapituloIX_Activity.class);
			// b.putBoolean("pregunta", true);
			foto.putExtras(getIntent().getExtras());
			foto.putExtra("pregunta", true);
			startActivity(foto);
			break;
		default:
			break;
		}
		return super.onOptionsItemSelected(item);
	}

	public String msj = "";

	public boolean Guardar() {
		try {
			lTmp = cap5Dao.obtenerP5_NLocal(id_local, P5_NroPred, P5_NroPiso);
			for (int i = 0; i < count; i++) {
				if (lTmp.get(i).getP5_TotAmb() != 99) {
					if (lTmp.get(i).getP5_TotAmb() > lAmbientes.get(i)
							.getP5_TotAmb()) {
						msj = "No puede ingresar cantidades menores en la Edificacion Nro "
								+ ((i + 1) < 10 ? "0" + (i + 1) : "" + (i + 1));
						return false;
					}
				}

			}
			for (int i = 0; i < count; i++) {
				lAmbientes.get(i).setSwCompleto(true);
				cap5Dao.NoBorres(id_local, P5_NroPred, P5_NroPiso, i + 1,
						lAmbientes.get(i).getP5_TotAmb());
			}
			cap5Dao.actualizarP5_NEdificacion(lAmbientes);
			return true;
		} catch (Exception e) {
			msj = "No se pudo guardar";
			return false;
		}
	}

	public class Ambientes extends AsyncTask<Void, Void, String> {

		@Override
		protected void onPreExecute() {
			// TODO Auto-generated method stub
			progreso.show();
		}

		@Override
		protected String doInBackground(Void... params) {
			// TODO Auto-generated method stub
			String resultado = "";
			if (Guardar()) {
				resultado = "Se guardo con exito";
			} else {
				resultado = msj;
			}
			return resultado;
		}

		@Override
		protected void onPostExecute(String resultado) {
			// TODO Auto-generated method stub
			progreso.dismiss();
			if (!resultado.equals("")) {
				Toast.makeText(CapituloV_Total_Ambientes_Activity.this,
						resultado, Toast.LENGTH_SHORT).show();
			}
		}
	}

	@Override
	public void onBackPressed() {
		// TODO Auto-generated method stub
		super.onBackPressed();
		Intent irPredio = new Intent(CapituloV_Total_Ambientes_Activity.this,
				CapituloV_Pisos.class);
		Bundle f = getIntent().getExtras();
		f.putString("id_local", id_local);
		f.putInt("Nro_Pred", P5_NroPred);
		irPredio.putExtras(f);
		startActivity(irPredio);
		finish();
	}

	public class ViewHolder {
		TextView tviAmbiente;
		EditText eteAmbiente;
	}
}
